/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entities;

import java.io.Serializable;
import java.util.List;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author damfercer
 */
@Entity
@Table(name = "proveedor", catalog = "corporate", schema = "")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Proveedor.findAll", query = "SELECT p FROM Proveedor p"),
    @NamedQuery(name = "Proveedor.findByIdProveedor", query = "SELECT p FROM Proveedor p WHERE p.idProveedor = :idProveedor"),
    @NamedQuery(name = "Proveedor.findByRazonSocial", query = "SELECT p FROM Proveedor p WHERE p.razonSocial = :razonSocial"),
    @NamedQuery(name = "Proveedor.findByNombreComercial", query = "SELECT p FROM Proveedor p WHERE p.nombreComercial = :nombreComercial"),
    @NamedQuery(name = "Proveedor.findByCif", query = "SELECT p FROM Proveedor p WHERE p.cif = :cif"),
    @NamedQuery(name = "Proveedor.findByDireccion1", query = "SELECT p FROM Proveedor p WHERE p.direccion1 = :direccion1"),
    @NamedQuery(name = "Proveedor.findByLocalidad1", query = "SELECT p FROM Proveedor p WHERE p.localidad1 = :localidad1"),
    @NamedQuery(name = "Proveedor.findByCodigoPostal1", query = "SELECT p FROM Proveedor p WHERE p.codigoPostal1 = :codigoPostal1"),
    @NamedQuery(name = "Proveedor.findByDireccion2", query = "SELECT p FROM Proveedor p WHERE p.direccion2 = :direccion2"),
    @NamedQuery(name = "Proveedor.findByLocalidad2", query = "SELECT p FROM Proveedor p WHERE p.localidad2 = :localidad2"),
    @NamedQuery(name = "Proveedor.findByCodigoPostal2", query = "SELECT p FROM Proveedor p WHERE p.codigoPostal2 = :codigoPostal2"),
    @NamedQuery(name = "Proveedor.findByPersonaContacto", query = "SELECT p FROM Proveedor p WHERE p.personaContacto = :personaContacto"),
    @NamedQuery(name = "Proveedor.findByEmailComercial", query = "SELECT p FROM Proveedor p WHERE p.emailComercial = :emailComercial"),
    @NamedQuery(name = "Proveedor.findByEmailAdministracion", query = "SELECT p FROM Proveedor p WHERE p.emailAdministracion = :emailAdministracion"),
    @NamedQuery(name = "Proveedor.findByTelefonoFijo", query = "SELECT p FROM Proveedor p WHERE p.telefonoFijo = :telefonoFijo"),
    @NamedQuery(name = "Proveedor.findByTelefonoMovil", query = "SELECT p FROM Proveedor p WHERE p.telefonoMovil = :telefonoMovil"),
    @NamedQuery(name = "Proveedor.findByFax", query = "SELECT p FROM Proveedor p WHERE p.fax = :fax"),
    @NamedQuery(name = "Proveedor.findByIbancc", query = "SELECT p FROM Proveedor p WHERE p.ibancc = :ibancc"),
    @NamedQuery(name = "Proveedor.findBySwift", query = "SELECT p FROM Proveedor p WHERE p.swift = :swift"),
    @NamedQuery(name = "Proveedor.findByAdelanto", query = "SELECT p FROM Proveedor p WHERE p.adelanto = :adelanto"),
    @NamedQuery(name = "Proveedor.findByWeb", query = "SELECT p FROM Proveedor p WHERE p.web = :web"),
    @NamedQuery(name = "Proveedor.findByComentarios", query = "SELECT p FROM Proveedor p WHERE p.comentarios = :comentarios"),
    @NamedQuery(name = "Proveedor.findByFechaCreacion", query = "SELECT p FROM Proveedor p WHERE p.fechaCreacion = :fechaCreacion"),
    @NamedQuery(name = "Proveedor.findByFechaUltimaModificacion", query = "SELECT p FROM Proveedor p WHERE p.fechaUltimaModificacion = :fechaUltimaModificacion")})
public class Proveedor implements Serializable {
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "proveedor")
    private List<PedidoFabrica> pedidoFabricaList;
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "ID_PROVEEDOR")
    private Integer idProveedor;
    @Size(max = 100)
    @Column(name = "RAZON_SOCIAL")
    private String razonSocial;
    @Size(max = 100)
    @Column(name = "NOMBRE_COMERCIAL")
    private String nombreComercial;
    @Size(max = 20)
    @Column(name = "CIF")
    private String cif;
    @Size(max = 120)
    @Column(name = "DIRECCION_1")
    private String direccion1;
    @Size(max = 60)
    @Column(name = "LOCALIDAD_1")
    private String localidad1;
    @Size(max = 10)
    @Column(name = "CODIGO_POSTAL_1")
    private String codigoPostal1;
    @Size(max = 120)
    @Column(name = "DIRECCION_2")
    private String direccion2;
    @Size(max = 60)
    @Column(name = "LOCALIDAD_2")
    private String localidad2;
    @Size(max = 10)
    @Column(name = "CODIGO_POSTAL_2")
    private String codigoPostal2;
    @Size(max = 30)
    @Column(name = "PERSONA_CONTACTO")
    private String personaContacto;
    @Size(max = 60)
    @Column(name = "EMAIL_COMERCIAL")
    private String emailComercial;
    @Size(max = 60)
    @Column(name = "EMAIL_ADMINISTRACION")
    private String emailAdministracion;
    @Size(max = 20)
    @Column(name = "TELEFONO_FIJO")
    private String telefonoFijo;
    @Size(max = 20)
    @Column(name = "TELEFONO_MOVIL")
    private String telefonoMovil;
    // @Pattern(regexp="^\\(?(\\d{3})\\)?[- ]?(\\d{3})[- ]?(\\d{4})$", message="Invalid phone/fax format, should be as xxx-xxx-xxxx")//if the field contains phone or fax number consider using this annotation to enforce field validation
    @Size(max = 20)
    @Column(name = "FAX")
    private String fax;
    @Size(max = 30)
    @Column(name = "IBANCC")
    private String ibancc;
    @Size(max = 16)
    @Column(name = "SWIFT")
    private String swift;
    @Column(name = "ADELANTO")
    private Integer adelanto;
    @Size(max = 60)
    @Column(name = "WEB")
    private String web;
    @Size(max = 120)
    @Column(name = "COMENTARIOS")
    private String comentarios;
    @Column(name = "FECHA_CREACION")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaCreacion;
    @Column(name = "FECHA_ULTIMA_MODIFICACION")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaUltimaModificacion;
    @OneToMany(mappedBy = "proveedor")
    private List<Producto> productoList;
    @OneToMany(mappedBy = "fabricanteTela")
    private List<Producto> productoList1;
    @JoinColumn(name = "RESTO", referencedColumnName = "ID_RESTO")
    @ManyToOne
    private Resto resto;
    @JoinColumn(name = "USUARIO_CREADOR", referencedColumnName = "ID_USUARIO")
    @ManyToOne
    private Usuario usuarioCreador;
    @JoinColumn(name = "C_2", referencedColumnName = "ID_C")
    @ManyToOne
    private C c2;
    @JoinColumn(name = "C_1", referencedColumnName = "ID_C")
    @ManyToOne
    private C c1;
    @JoinColumn(name = "FORMA_PAGO", referencedColumnName = "ID_FORMA_PAGO")
    @ManyToOne
    private FormaPago formaPago;
    @JoinColumn(name = "PAIS_2", referencedColumnName = "ID_PAIS")
    @ManyToOne
    private Pais pais2;
    @JoinColumn(name = "PROVINCIA_2", referencedColumnName = "ID_PROVINCIA")
    @ManyToOne
    private Provincia provincia2;
    @JoinColumn(name = "PAIS_1", referencedColumnName = "ID_PAIS")
    @ManyToOne
    private Pais pais1;
    @JoinColumn(name = "PROVINCIA_1", referencedColumnName = "ID_PROVINCIA")
    @ManyToOne
    private Provincia provincia1;

    public Proveedor() {
    }

    public Proveedor(Integer idProveedor) {
        this.idProveedor = idProveedor;
    }

    public Integer getIdProveedor() {
        return idProveedor;
    }

    public void setIdProveedor(Integer idProveedor) {
        this.idProveedor = idProveedor;
    }

    public String getRazonSocial() {
        return razonSocial;
    }

    public void setRazonSocial(String razonSocial) {
        this.razonSocial = razonSocial;
    }

    public String getNombreComercial() {
        return nombreComercial;
    }

    public void setNombreComercial(String nombreComercial) {
        this.nombreComercial = nombreComercial;
    }

    public String getCif() {
        return cif;
    }

    public void setCif(String cif) {
        this.cif = cif;
    }

    public String getDireccion1() {
        return direccion1;
    }

    public void setDireccion1(String direccion1) {
        this.direccion1 = direccion1;
    }

    public String getLocalidad1() {
        return localidad1;
    }

    public void setLocalidad1(String localidad1) {
        this.localidad1 = localidad1;
    }

    public String getCodigoPostal1() {
        return codigoPostal1;
    }

    public void setCodigoPostal1(String codigoPostal1) {
        this.codigoPostal1 = codigoPostal1;
    }

    public String getDireccion2() {
        return direccion2;
    }

    public void setDireccion2(String direccion2) {
        this.direccion2 = direccion2;
    }

    public String getLocalidad2() {
        return localidad2;
    }

    public void setLocalidad2(String localidad2) {
        this.localidad2 = localidad2;
    }

    public String getCodigoPostal2() {
        return codigoPostal2;
    }

    public void setCodigoPostal2(String codigoPostal2) {
        this.codigoPostal2 = codigoPostal2;
    }

    public String getPersonaContacto() {
        return personaContacto;
    }

    public void setPersonaContacto(String personaContacto) {
        this.personaContacto = personaContacto;
    }

    public String getEmailComercial() {
        return emailComercial;
    }

    public void setEmailComercial(String emailComercial) {
        this.emailComercial = emailComercial;
    }

    public String getEmailAdministracion() {
        return emailAdministracion;
    }

    public void setEmailAdministracion(String emailAdministracion) {
        this.emailAdministracion = emailAdministracion;
    }

    public String getTelefonoFijo() {
        return telefonoFijo;
    }

    public void setTelefonoFijo(String telefonoFijo) {
        this.telefonoFijo = telefonoFijo;
    }

    public String getTelefonoMovil() {
        return telefonoMovil;
    }

    public void setTelefonoMovil(String telefonoMovil) {
        this.telefonoMovil = telefonoMovil;
    }

    public String getFax() {
        return fax;
    }

    public void setFax(String fax) {
        this.fax = fax;
    }

    public String getIbancc() {
        return ibancc;
    }

    public void setIbancc(String ibancc) {
        this.ibancc = ibancc;
    }

    public String getSwift() {
        return swift;
    }

    public void setSwift(String swift) {
        this.swift = swift;
    }

    public Integer getAdelanto() {
        return adelanto;
    }

    public void setAdelanto(Integer adelanto) {
        this.adelanto = adelanto;
    }

    public String getWeb() {
        return web;
    }

    public void setWeb(String web) {
        this.web = web;
    }

    public String getComentarios() {
        return comentarios;
    }

    public void setComentarios(String comentarios) {
        this.comentarios = comentarios;
    }

    public Date getFechaCreacion() {
        return fechaCreacion;
    }

    public void setFechaCreacion(Date fechaCreacion) {
        this.fechaCreacion = fechaCreacion;
    }

    public Date getFechaUltimaModificacion() {
        return fechaUltimaModificacion;
    }

    public void setFechaUltimaModificacion(Date fechaUltimaModificacion) {
        this.fechaUltimaModificacion = fechaUltimaModificacion;
    }

    @XmlTransient
    public List<Producto> getProductoList() {
        return productoList;
    }

    public void setProductoList(List<Producto> productoList) {
        this.productoList = productoList;
    }

    @XmlTransient
    public List<Producto> getProductoList1() {
        return productoList1;
    }

    public void setProductoList1(List<Producto> productoList1) {
        this.productoList1 = productoList1;
    }

    public Resto getResto() {
        return resto;
    }

    public void setResto(Resto resto) {
        this.resto = resto;
    }

    public Usuario getUsuarioCreador() {
        return usuarioCreador;
    }

    public void setUsuarioCreador(Usuario usuarioCreador) {
        this.usuarioCreador = usuarioCreador;
    }

    public C getC2() {
        return c2;
    }

    public void setC2(C c2) {
        this.c2 = c2;
    }

    public C getC1() {
        return c1;
    }

    public void setC1(C c1) {
        this.c1 = c1;
    }

    public FormaPago getFormaPago() {
        return formaPago;
    }

    public void setFormaPago(FormaPago formaPago) {
        this.formaPago = formaPago;
    }

    public Pais getPais2() {
        return pais2;
    }

    public void setPais2(Pais pais2) {
        this.pais2 = pais2;
    }

    public Provincia getProvincia2() {
        return provincia2;
    }

    public void setProvincia2(Provincia provincia2) {
        this.provincia2 = provincia2;
    }

    public Pais getPais1() {
        return pais1;
    }

    public void setPais1(Pais pais1) {
        this.pais1 = pais1;
    }

    public Provincia getProvincia1() {
        return provincia1;
    }

    public void setProvincia1(Provincia provincia1) {
        this.provincia1 = provincia1;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idProveedor != null ? idProveedor.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Proveedor)) {
            return false;
        }
        Proveedor other = (Proveedor) object;
        if ((this.idProveedor == null && other.idProveedor != null) || (this.idProveedor != null && !this.idProveedor.equals(other.idProveedor))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entities.Proveedor[ idProveedor=" + idProveedor + " ]";
    }

    @XmlTransient
    public List<PedidoFabrica> getPedidoFabricaList() {
        return pedidoFabricaList;
    }

    public void setPedidoFabricaList(List<PedidoFabrica> pedidoFabricaList) {
        this.pedidoFabricaList = pedidoFabricaList;
    }
    
}
